home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / ddj0897.zip / DYN401.ZIP / class / longint.d < prev    next >
Text File  |  1996-06-26  |  2KB  |  138 lines

  1.  
  2. /*
  3.  *
  4.  *    Copyright (c) 1993-1996 Algorithms Corporation
  5.  *    3020 Liberty Hills Drive
  6.  *    Franklin, TN  37067
  7.  *
  8.  *    ALL RIGHTS RESERVED.
  9.  *
  10.  *
  11.  *
  12.  */
  13.  
  14.  
  15. #include <math.h>
  16.  
  17.  
  18. defclass  LongInteger : Number  {
  19.     long    iVal;
  20. };
  21.  
  22. cmeth    gNewWithLong, <vNew> (long val)
  23. {
  24.     object    obj = gNew(super);
  25.     ivType    *iv = ivPtr(obj);
  26.     iVal = val;
  27.     return(obj);
  28. }
  29.  
  30. imeth    int    gHash()
  31. {
  32.     double    t;
  33.  
  34.     t = .6125423371    * (unsigned long) iVal;
  35.     t = t < 0.0 ? -t : t;
  36.     return (int) (BIG_INT * (t - floor(t)));
  37. }
  38.  
  39. imeth    int    gCompare(obj)
  40. {
  41.     long    sv, ov;
  42.  
  43.     ChkArg(obj, 2);
  44.     if (ClassOf(obj) != CLASS  &&  ClassOf(obj) != Date)
  45.         return gCompare(super, obj);
  46.     if ((sv=iVal) < (ov=ivPtr(obj)->iVal))
  47.         return -1;
  48.     else if (sv == ov)
  49.         return 0;
  50.     else
  51.         return 1;
  52. }
  53.  
  54. imeth    gStringRepValue()
  55. {
  56.     return vSprintf(String, "%ld", iVal);
  57. }
  58.  
  59. imeth    char    gCharValue()
  60. {
  61.     return (char) iVal;
  62. }
  63.  
  64. imeth    short    gShortValue()
  65. {
  66.     return (short) iVal;
  67. }
  68.  
  69. imeth    unsigned short    gUnsignedShortValue()
  70. {
  71.     return (unsigned short) iVal;
  72. }
  73.  
  74. imeth    long    gLongValue()
  75. {
  76.     return (long) iVal;
  77. }
  78.  
  79. imeth    double    gDoubleValue()
  80. {
  81.     return (double) iVal;
  82. }
  83.  
  84. imeth    void    *gPointerValue()
  85. {
  86.     return (void *) &iVal;
  87. }
  88.  
  89. imeth    gChangeValue(val)
  90. {
  91.     ChkArg(val, 2);
  92.     iVal = gLongValue(val);
  93.     return self;
  94. }
  95.  
  96. imeth    gChangeCharValue(int val)
  97. {
  98.     iVal = (long) val;
  99.     return self;
  100. }
  101.  
  102. imeth    gChangeShortValue(int val)
  103. {
  104.     iVal = (long) val;
  105.     return self;
  106. }
  107.  
  108. imeth    gChangeUShortValue(unsigned val)
  109. {
  110.     iVal = (long) val;
  111.     return self;
  112. }
  113.  
  114. imeth    gChangeLongValue(long val)
  115. {
  116.     iVal = (long) val;
  117.     return self;
  118. }
  119.  
  120. imeth    gChangeDoubleValue(double val)
  121. {
  122.     iVal = (long) val;
  123.     return self;
  124. }
  125.  
  126.  
  127. /*
  128.  *
  129.  *    Copyright (c) 1993-1996 Algorithms Corporation
  130.  *    3020 Liberty Hills Drive
  131.  *    Franklin, TN  37067
  132.  *
  133.  *    ALL RIGHTS RESERVED.
  134.  *
  135.  *
  136.  *
  137.  */
  138.